/**
 * @Copyright:Copyright (c) 1992 - 2015
 * @Company: TengTong
 */
package com.tengtong.duang.commons.convert.support;

import java.util.HashSet;
import java.util.Set;

import com.tengtong.duang.commons.convert.Converter;
import com.tengtong.duang.commons.utils.StringUtils;

/**
 * 字符串类型转换器，可以将下面的内容转为字符串：
 *  
 *  1) 日期类型
 *  
 * @author jai
 *
 */
public class StringToBooleanConverter implements Converter<String, Boolean> {
		
	private static final Set<String> trueValues = new HashSet<String>(4);

	private static final Set<String> falseValues = new HashSet<String>(4);

	static {
		trueValues.add("true");
		trueValues.add("on");
		trueValues.add("yes");
		trueValues.add("1");
		trueValues.add("真");

		falseValues.add("false");
		falseValues.add("off");
		falseValues.add("no");
		falseValues.add("0");
		falseValues.add("假");
	}
	
	
	/* (non-Javadoc)
	 * 
	 * @see com.tengtong.duang.commons.convert.Converter#convert(java.lang.Object)
	 */
	@Override
	public Boolean convert(String source) {
		if(StringUtils.isNullOrEmpty(source))
			return null;
		
		source = source.trim().toLowerCase();
		if(trueValues.contains(source)){
			return Boolean.TRUE;
		}
		
		if(falseValues.contains(source)){
			return Boolean.FALSE;
		}
		
		throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
	}
}
